{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://mp.weixin.qq.com/s?__biz=MzI0NTQ1NDc4Nw==&mid=2247485382&idx=1&sn=579dec5584747e1a6742a23662de7c6d&chksm=e94f056ade388c7c0c1ceab8eb5c15fb00cd6af234b08e3d9541b634c1a11090b062ad7cc5c3&scene=21#wechat_redirect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "import logging\n",
    "logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文件夹\"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\" 将被用来存储语料和临时性的字典\n"
     ]
    }
   ],
   "source": [
    "\n",
    "import tempfile\n",
    "import os.path\n",
    "\n",
    "\n",
    "TEMP_FOLDER = tempfile.gettempdir()\n",
    "print('文件夹\"{}\" 将被用来存储语料和临时性的字典'.format(TEMP_FOLDER))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. 数据转换接口（Transformation interface）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:50:15,055 : INFO : loading Dictionary object from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\deerwester.dict\n",
      "2020-11-10 20:50:15,057 : INFO : loaded C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\deerwester.dict\n",
      "2020-11-10 20:50:15,062 : INFO : loaded corpus index from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\deerwester.mm.index\n",
      "2020-11-10 20:50:15,069 : INFO : initializing cython corpus reader from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\deerwester.mm\n",
      "2020-11-10 20:50:15,073 : INFO : accepted corpus with 12 documents, 14 features, 39 non-zero entries\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "使用前面教程中产生的语料文件。\n"
     ]
    }
   ],
   "source": [
    "\n",
    "from gensim import corpora, models, similarities\n",
    "if os.path.isfile(os.path.join(TEMP_FOLDER, 'deerwester.dict')):\n",
    "    dictionary = corpora.Dictionary.load(os.path.join(TEMP_FOLDER, 'deerwester.dict'))\n",
    "    corpus = corpora.MmCorpus(os.path.join(TEMP_FOLDER, 'deerwester.mm'))\n",
    "    print(\"使用前面教程中产生的语料文件。\")\n",
    "else:\n",
    "    print(\"请运行前面的教程，以生成语料文件。\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "创新\n",
      "商业\n",
      "构建\n"
     ]
    }
   ],
   "source": [
    "\n",
    "print(dictionary[0])\n",
    "print(dictionary[1])\n",
    "print(dictionary[2])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.1 创建转换（Creating a Transformation）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:50:39,422 : INFO : collecting document frequencies\n",
      "2020-11-10 20:50:39,427 : INFO : PROGRESS: processing document #0\n",
      "2020-11-10 20:50:39,431 : INFO : calculating IDF weights for 12 documents and 14 features (39 matrix non-zeros)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "tfidf = models.TfidfModel(corpus)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(0, 0.5144957554275265), (1, 0.8574929257125441)]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "doc_bow = [(0, 3), (1, 5)]\n",
    "print(tfidf[doc_bow]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(0, 0.4078964886286983), (1, 0.8157929772573966), (2, 0.4078964886286983), (3, 0.04150575124328046)]\n",
      "[(3, 0.07982263066186342), (4, 0.38329103210095783), (5, 0.48098603643475885), (6, 0.7844544378738532)]\n",
      "[(3, 0.025128868703899597), (7, 0.24695318119778994), (8, 0.6849754251993109), (9, 0.6849754251993109)]\n",
      "[(3, 0.07982263066186342), (4, 0.38329103210095783), (5, 0.48098603643475885), (10, 0.7844544378738532)]\n",
      "[(3, 0.0910460341905888), (4, 0.43718339178067905), (6, 0.8947520894690928)]\n",
      "[(1, 0.6668011702142979), (3, 0.06785075201967737), (4, 0.32580465658435587), (10, 0.6668011702142979)]\n",
      "[(5, 0.6962169034343767), (7, 0.5677404313752555), (11, 0.4392639593161345)]\n",
      "[(0, 0.7071067811865476), (12, 0.7071067811865476)]\n",
      "[(2, 0.8947520894690927), (3, 0.09104603419058879), (4, 0.437183391780679)]\n",
      "[(3, 0.16371704169295062), (5, 0.9865073391816752)]\n",
      "[(3, 0.13039433685974838), (11, 0.9914622115415728)]\n",
      "[(3, 0.061003335283038695), (11, 0.4638430101162164), (12, 0.29975419684301086), (13, 0.83142989874413)]\n"
     ]
    }
   ],
   "source": [
    "corpus_tfidf = tfidf[corpus]\n",
    "for doc in corpus_tfidf:\n",
    "    print(doc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:51:02,291 : INFO : using serial LSI version on this node\n",
      "2020-11-10 20:51:02,295 : INFO : updating model with new documents\n",
      "2020-11-10 20:51:02,301 : INFO : preparing a new chunk of documents\n",
      "2020-11-10 20:51:02,303 : INFO : using 100 extra samples and 2 power iterations\n",
      "2020-11-10 20:51:02,306 : INFO : 1st phase: constructing (14, 103) action matrix\n",
      "2020-11-10 20:51:02,311 : INFO : orthonormalizing (14, 103) action matrix\n",
      "2020-11-10 20:51:02,349 : INFO : 2nd phase: running dense svd on (14, 12) matrix\n",
      "2020-11-10 20:51:02,355 : INFO : computing the final decomposition\n",
      "2020-11-10 20:51:02,358 : INFO : keeping 3 factors (discarding 47.536% of energy spectrum)\n",
      "2020-11-10 20:51:02,365 : INFO : processed documents up to #12\n",
      "2020-11-10 20:51:02,370 : INFO : topic #0(1.667): 0.663*\"数据\" + 0.402*\"金融\" + 0.402*\"技术\" + 0.322*\"一文\" + 0.201*\"企业\" + 0.180*\"商业\" + 0.141*\"知识图谱\" + 0.133*\"分析\" + 0.132*\"构建\" + 0.047*\"创新\"\n",
      "2020-11-10 20:51:02,373 : INFO : topic #1(1.363): -0.507*\"企业\" + 0.463*\"商业\" + -0.382*\"数据\" + 0.331*\"构建\" + 0.294*\"技术\" + 0.266*\"一文\" + -0.196*\"分析\" + -0.173*\"转型\" + 0.165*\"创新\" + 0.131*\"金融\"\n",
      "2020-11-10 20:51:02,376 : INFO : topic #2(1.287): -0.492*\"企业\" + 0.465*\"金融\" + -0.424*\"商业\" + -0.322*\"创新\" + -0.279*\"新\" + -0.271*\"转型\" + -0.227*\"构建\" + -0.157*\"一文\" + 0.114*\"数据\" + 0.108*\"技术\"\n"
     ]
    }
   ],
   "source": [
    "\n",
    "lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=3) # 初始化 LSI 转换\n",
    "corpus_lsi = lsi[corpus_tfidf] #在原始语料词袋表示的基础上创建一个双包装器（Double Wrapper）：bow-> tfidf-> lsi    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.663*\"数据\" + 0.402*\"金融\" + 0.402*\"技术\" + 0.322*\"一文\" + 0.201*\"企业\" + 0.180*\"商业\" + 0.141*\"知识图谱\" + 0.133*\"分析\" + 0.132*\"构建\" + 0.047*\"创新\"'),\n",
       " (1,\n",
       "  '-0.507*\"企业\" + 0.463*\"商业\" + -0.382*\"数据\" + 0.331*\"构建\" + 0.294*\"技术\" + 0.266*\"一文\" + -0.196*\"分析\" + -0.173*\"转型\" + 0.165*\"创新\" + 0.131*\"金融\"'),\n",
       " (2,\n",
       "  '-0.492*\"企业\" + 0.465*\"金融\" + -0.424*\"商业\" + -0.322*\"创新\" + -0.279*\"新\" + -0.271*\"转型\" + -0.227*\"构建\" + -0.157*\"一文\" + 0.114*\"数据\" + 0.108*\"技术\"')]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "lsi.show_topics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(0, 0.22606950327430653), (1, 0.5796090422582088), (2, -0.5715911138004907)]\n",
      "[(0, 0.799898407378997), (1, 0.030695540051281375), (2, 0.45775280192055234)]\n",
      "[(0, 0.05475677875704915), (1, -0.09830277333276849), (2, -0.039629854982237506)]\n",
      "[(0, 0.7369088232660597), (1, 0.13723183360587932), (2, -0.03022639103341361)]\n",
      "[(0, 0.5487723597650247), (1, 0.24451138886755686), (2, 0.4595354277471021)]\n",
      "[(0, 0.4757789530375335), (1, 0.5814185350518235), (2, -0.35527675776033135)]\n",
      "[(0, 0.6249611267023711), (1, -0.5999576234466761), (2, -0.17388944553480767)]\n",
      "[(0, 0.05420264678307037), (1, 0.09913451077378665), (2, -0.4247610484308767)]\n",
      "[(0, 0.30674074205164603), (1, 0.42399683296670043), (2, -0.15908142493703428)]\n",
      "[(0, 0.6768876674126422), (1, -0.37811646905914953), (2, 0.10589013144495275)]\n",
      "[(0, 0.21768925099964442), (1, -0.5036800968526738), (2, -0.4931149119252354)]\n",
      "[(0, 0.1474033352285542), (1, -0.3868961803241247), (2, -0.5391689051703792)]\n"
     ]
    }
   ],
   "source": [
    "for doc in corpus_lsi: # bow->tfidf转换 和 tfidf->lsi转换实际上是在这里即时完成的\n",
    "    print(doc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:51:25,936 : INFO : saving Projection object under C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi.projection, separately None\n",
      "2020-11-10 20:51:25,941 : INFO : saved C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi.projection\n",
      "2020-11-10 20:51:25,944 : INFO : saving LsiModel object under C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi, separately None\n",
      "2020-11-10 20:51:25,947 : INFO : not storing attribute projection\n",
      "2020-11-10 20:51:25,949 : INFO : not storing attribute dispatcher\n",
      "2020-11-10 20:51:25,953 : INFO : saved C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi\n",
      "2020-11-10 20:51:25,956 : INFO : loading LsiModel object from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi\n",
      "2020-11-10 20:51:25,960 : INFO : loading id2word recursively from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi.id2word.* with mmap=None\n",
      "2020-11-10 20:51:25,963 : INFO : setting ignored attribute projection to None\n",
      "2020-11-10 20:51:25,967 : INFO : setting ignored attribute dispatcher to None\n",
      "2020-11-10 20:51:25,970 : INFO : loaded C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi\n",
      "2020-11-10 20:51:25,972 : INFO : loading LsiModel object from C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi.projection\n",
      "2020-11-10 20:51:25,975 : INFO : loaded C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\model.lsi.projection\n"
     ]
    }
   ],
   "source": [
    "lsi.save(os.path.join(TEMP_FOLDER, 'model.lsi')) \n",
    "lsi = models.LsiModel.load(os.path.join(TEMP_FOLDER, 'model.lsi'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Gensim中可用的几种文本数据转换模型（Available Transformations Model in Gensim）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1 词频-逆向文件频率（Term Frequency * Inverse Document Frequency）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:51:49,533 : INFO : collecting document frequencies\n",
      "2020-11-10 20:51:49,538 : INFO : PROGRESS: processing document #0\n",
      "2020-11-10 20:51:49,540 : INFO : calculating IDF weights for 12 documents and 14 features (39 matrix non-zeros)\n"
     ]
    }
   ],
   "source": [
    "model = models.TfidfModel(corpus, normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 潜在语义索引（LSI）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:52:16,716 : INFO : using serial LSI version on this node\n",
      "2020-11-10 20:52:16,719 : INFO : updating model with new documents\n",
      "2020-11-10 20:52:16,724 : INFO : preparing a new chunk of documents\n",
      "2020-11-10 20:52:16,728 : INFO : using 100 extra samples and 2 power iterations\n",
      "2020-11-10 20:52:16,731 : INFO : 1st phase: constructing (14, 106) action matrix\n",
      "2020-11-10 20:52:16,734 : INFO : orthonormalizing (14, 106) action matrix\n",
      "2020-11-10 20:52:16,739 : INFO : 2nd phase: running dense svd on (14, 12) matrix\n",
      "2020-11-10 20:52:16,743 : INFO : computing the final decomposition\n",
      "2020-11-10 20:52:16,746 : INFO : keeping 6 factors (discarding 18.932% of energy spectrum)\n",
      "2020-11-10 20:52:16,748 : INFO : processed documents up to #12\n",
      "2020-11-10 20:52:16,751 : INFO : topic #0(1.667): 0.663*\"数据\" + 0.402*\"金融\" + 0.402*\"技术\" + 0.322*\"一文\" + 0.201*\"企业\" + 0.180*\"商业\" + 0.141*\"知识图谱\" + 0.133*\"分析\" + 0.132*\"构建\" + 0.047*\"创新\"\n",
      "2020-11-10 20:52:16,754 : INFO : topic #1(1.363): -0.507*\"企业\" + 0.463*\"商业\" + -0.382*\"数据\" + 0.331*\"构建\" + 0.294*\"技术\" + 0.266*\"一文\" + -0.196*\"分析\" + -0.173*\"转型\" + 0.165*\"创新\" + 0.131*\"金融\"\n",
      "2020-11-10 20:52:16,758 : INFO : topic #2(1.287): -0.492*\"企业\" + 0.465*\"金融\" + -0.424*\"商业\" + -0.322*\"创新\" + -0.279*\"新\" + -0.271*\"转型\" + -0.227*\"构建\" + -0.157*\"一文\" + 0.114*\"数据\" + 0.108*\"技术\"\n",
      "2020-11-10 20:52:16,762 : INFO : topic #3(1.172): 0.604*\"金融\" + -0.411*\"数据\" + -0.370*\"一文\" + 0.324*\"企业\" + 0.271*\"转型\" + 0.232*\"新\" + 0.178*\"技术\" + 0.136*\"创新\" + 0.132*\"构建\" + -0.128*\"商业\"\n",
      "2020-11-10 20:52:16,766 : INFO : topic #4(1.023): -0.531*\"创新\" + -0.395*\"新\" + 0.382*\"一文\" + 0.372*\"企业\" + -0.293*\"数据\" + -0.235*\"管理\" + -0.235*\"知识\" + 0.167*\"技术\" + -0.154*\"分析\" + 0.131*\"转型\"\n"
     ]
    }
   ],
   "source": [
    "model = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:52:22,480 : INFO : topic #0(1.667): 0.663*\"数据\" + 0.402*\"金融\" + 0.402*\"技术\" + 0.322*\"一文\" + 0.201*\"企业\" + 0.180*\"商业\" + 0.141*\"知识图谱\" + 0.133*\"分析\" + 0.132*\"构建\" + 0.047*\"创新\"\n",
      "2020-11-10 20:52:22,484 : INFO : topic #1(1.363): -0.507*\"企业\" + 0.463*\"商业\" + -0.382*\"数据\" + 0.331*\"构建\" + 0.294*\"技术\" + 0.266*\"一文\" + -0.196*\"分析\" + -0.173*\"转型\" + 0.165*\"创新\" + 0.131*\"金融\"\n",
      "2020-11-10 20:52:22,487 : INFO : topic #2(1.287): -0.492*\"企业\" + 0.465*\"金融\" + -0.424*\"商业\" + -0.322*\"创新\" + -0.279*\"新\" + -0.271*\"转型\" + -0.227*\"构建\" + -0.157*\"一文\" + 0.114*\"数据\" + 0.108*\"技术\"\n",
      "2020-11-10 20:52:22,490 : INFO : topic #3(1.172): 0.604*\"金融\" + -0.411*\"数据\" + -0.370*\"一文\" + 0.324*\"企业\" + 0.271*\"转型\" + 0.232*\"新\" + 0.178*\"技术\" + 0.136*\"创新\" + 0.132*\"构建\" + -0.128*\"商业\"\n",
      "2020-11-10 20:52:22,493 : INFO : topic #4(1.023): -0.531*\"创新\" + -0.395*\"新\" + 0.382*\"一文\" + 0.372*\"企业\" + -0.293*\"数据\" + -0.235*\"管理\" + -0.235*\"知识\" + 0.167*\"技术\" + -0.154*\"分析\" + 0.131*\"转型\"\n",
      "2020-11-10 20:52:22,498 : INFO : topic #5(1.006): 0.578*\"管理\" + 0.578*\"知识\" + -0.286*\"新\" + 0.252*\"分析\" + -0.250*\"创新\" + 0.242*\"构建\" + -0.177*\"数据\" + 0.132*\"企业\" + 0.088*\"技术\" + -0.059*\"转型\"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.663*\"数据\" + 0.402*\"金融\" + 0.402*\"技术\" + 0.322*\"一文\" + 0.201*\"企业\" + 0.180*\"商业\" + 0.141*\"知识图谱\" + 0.133*\"分析\" + 0.132*\"构建\" + 0.047*\"创新\"'),\n",
       " (1,\n",
       "  '-0.507*\"企业\" + 0.463*\"商业\" + -0.382*\"数据\" + 0.331*\"构建\" + 0.294*\"技术\" + 0.266*\"一文\" + -0.196*\"分析\" + -0.173*\"转型\" + 0.165*\"创新\" + 0.131*\"金融\"'),\n",
       " (2,\n",
       "  '-0.492*\"企业\" + 0.465*\"金融\" + -0.424*\"商业\" + -0.322*\"创新\" + -0.279*\"新\" + -0.271*\"转型\" + -0.227*\"构建\" + -0.157*\"一文\" + 0.114*\"数据\" + 0.108*\"技术\"'),\n",
       " (3,\n",
       "  '0.604*\"金融\" + -0.411*\"数据\" + -0.370*\"一文\" + 0.324*\"企业\" + 0.271*\"转型\" + 0.232*\"新\" + 0.178*\"技术\" + 0.136*\"创新\" + 0.132*\"构建\" + -0.128*\"商业\"'),\n",
       " (4,\n",
       "  '-0.531*\"创新\" + -0.395*\"新\" + 0.382*\"一文\" + 0.372*\"企业\" + -0.293*\"数据\" + -0.235*\"管理\" + -0.235*\"知识\" + 0.167*\"技术\" + -0.154*\"分析\" + 0.131*\"转型\"'),\n",
       " (5,\n",
       "  '0.578*\"管理\" + 0.578*\"知识\" + -0.286*\"新\" + 0.252*\"分析\" + -0.250*\"创新\" + 0.242*\"构建\" + -0.177*\"数据\" + 0.132*\"企业\" + 0.088*\"技术\" + -0.059*\"转型\"')]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.print_topics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'another_tfidf_corpus' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-15-95ca2357f98b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_documents\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0manother_tfidf_corpus\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m# 现在LSI模型已经在tfidf_corpus + 另一个tfidf_corpus上进行训练了\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mlsi_vec\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtfidf_vec\u001b[0m\u001b[1;33m]\u001b[0m                \u001b[1;31m# 将一个新文档转换到LSI空间，但不影响模型\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_documents\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmore_documents\u001b[0m\u001b[1;33m)\u001b[0m      \u001b[1;31m# tfidf_corpus + another_tfidf_corpus + 更多的文档 lsi_vec = model[tfidf_vec]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'another_tfidf_corpus' is not defined"
     ]
    }
   ],
   "source": [
    "model.add_documents(another_tfidf_corpus)  # 现在LSI模型已经在tfidf_corpus + 另一个tfidf_corpus上进行训练了\n",
    "lsi_vec = model[tfidf_vec]                # 将一个新文档转换到LSI空间，但不影响模型\n",
    "model.add_documents(more_documents)      # tfidf_corpus + another_tfidf_corpus + 更多的文档 lsi_vec = model[tfidf_vec]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.3 随机映射（Random Projections）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:53:11,083 : INFO : no word id mapping provided; initializing from corpus, assuming identity\n",
      "2020-11-10 20:53:11,088 : INFO : constructing (3, 14) random matrix\n"
     ]
    }
   ],
   "source": [
    "model = models.RpModel(corpus_tfidf, num_topics=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.num_topics #主题数有多少？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.num_topics #主题数有多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.4 隐狄利克雷分配模型（Latent Dirichlet Allocation, LDA）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:53:35,954 : INFO : using symmetric alpha at 0.3333333333333333\n",
      "2020-11-10 20:53:35,960 : INFO : using symmetric eta at 0.3333333333333333\n",
      "2020-11-10 20:53:35,963 : INFO : using serial LDA version on this node\n",
      "2020-11-10 20:53:35,969 : INFO : running online (single-pass) LDA training, 3 topics, 1 passes over the supplied corpus of 12 documents, updating model once every 12 documents, evaluating perplexity every 12 documents, iterating 50x with a convergence threshold of 0.001000\n",
      "2020-11-10 20:53:35,972 : WARNING : too few updates, training might not converge; consider increasing the number of passes or iterations to improve accuracy\n",
      "2020-11-10 20:53:35,990 : INFO : -3.813 per-word bound, 14.1 perplexity estimate based on a held-out corpus of 12 documents with 46 words\n",
      "2020-11-10 20:53:35,992 : INFO : PROGRESS: pass 0, at document #12/12\n",
      "2020-11-10 20:53:36,009 : INFO : topic #0 (0.333): 0.201*\"知识图谱\" + 0.106*\"知识\" + 0.106*\"技术\" + 0.106*\"管理\" + 0.105*\"商业\" + 0.104*\"构建\" + 0.061*\"分析\" + 0.061*\"创新\" + 0.059*\"金融\" + 0.020*\"数据\"\n",
      "2020-11-10 20:53:36,010 : INFO : topic #1 (0.333): 0.197*\"数据\" + 0.140*\"知识图谱\" + 0.137*\"技术\" + 0.134*\"一文\" + 0.080*\"企业\" + 0.079*\"商业\" + 0.078*\"分析\" + 0.023*\"创新\" + 0.023*\"金融\" + 0.022*\"新\"\n",
      "2020-11-10 20:53:36,013 : INFO : topic #2 (0.333): 0.245*\"知识图谱\" + 0.152*\"企业\" + 0.105*\"转型\" + 0.104*\"数据\" + 0.103*\"新\" + 0.065*\"技术\" + 0.062*\"金融\" + 0.060*\"创新\" + 0.019*\"商业\" + 0.018*\"一文\"\n",
      "2020-11-10 20:53:36,016 : INFO : topic diff=1.427742, rho=1.000000\n"
     ]
    }
   ],
   "source": [
    "\n",
    "model = models.LdaModel(corpus, id2word=dictionary, num_topics=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.201*\"知识图谱\" + 0.106*\"知识\" + 0.106*\"技术\" + 0.106*\"管理\" + 0.105*\"商业\" + 0.104*\"构建\" + 0.061*\"分析\" + 0.061*\"创新\" + 0.059*\"金融\" + 0.020*\"数据\"'),\n",
       " (1,\n",
       "  '0.197*\"数据\" + 0.140*\"知识图谱\" + 0.137*\"技术\" + 0.134*\"一文\" + 0.080*\"企业\" + 0.079*\"商业\" + 0.078*\"分析\" + 0.023*\"创新\" + 0.023*\"金融\" + 0.022*\"新\"'),\n",
       " (2,\n",
       "  '0.245*\"知识图谱\" + 0.152*\"企业\" + 0.105*\"转型\" + 0.104*\"数据\" + 0.103*\"新\" + 0.065*\"技术\" + 0.062*\"金融\" + 0.060*\"创新\" + 0.019*\"商业\" + 0.018*\"一文\"')]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.show_topics()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.5 层次狄利克雷过程（Hierarchical Dirichlet Process, HDP）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:53:56,200 : INFO : (0, '0.184*企业 + 0.144*一文 + 0.127*构建 + 0.104*商业 + 0.094*知识 + 0.064*金融 + 0.048*分析 + 0.046*管理 + 0.042*数据 + 0.038*新')\n",
      "2020-11-10 20:53:56,202 : INFO : (1, '0.229*一文 + 0.136*商业 + 0.103*金融 + 0.101*新 + 0.101*知识 + 0.079*构建 + 0.062*数据 + 0.047*技术 + 0.042*分析 + 0.030*转型')\n",
      "2020-11-10 20:53:56,206 : INFO : (2, '0.179*转型 + 0.145*数据 + 0.131*构建 + 0.077*技术 + 0.074*金融 + 0.069*创新 + 0.068*管理 + 0.068*新 + 0.065*分析 + 0.064*一文')\n",
      "2020-11-10 20:53:56,209 : INFO : (3, '0.166*知识图谱 + 0.151*金融 + 0.096*技术 + 0.096*商业 + 0.082*转型 + 0.078*创新 + 0.077*构建 + 0.066*一文 + 0.058*新 + 0.043*管理')\n",
      "2020-11-10 20:53:56,211 : INFO : (4, '0.245*数据 + 0.143*知识图谱 + 0.130*构建 + 0.121*知识 + 0.108*技术 + 0.069*创新 + 0.064*商业 + 0.045*金融 + 0.021*分析 + 0.016*转型')\n",
      "2020-11-10 20:53:56,213 : INFO : (5, '0.265*商业 + 0.130*一文 + 0.094*创新 + 0.082*数据 + 0.080*金融 + 0.068*新 + 0.057*知识图谱 + 0.053*构建 + 0.051*企业 + 0.048*分析')\n",
      "2020-11-10 20:53:56,216 : INFO : (6, '0.298*知识图谱 + 0.138*创新 + 0.124*一文 + 0.083*管理 + 0.078*转型 + 0.056*商业 + 0.051*知识 + 0.050*数据 + 0.045*分析 + 0.040*金融')\n",
      "2020-11-10 20:53:56,221 : INFO : (7, '0.258*技术 + 0.150*创新 + 0.118*知识图谱 + 0.081*数据 + 0.066*知识 + 0.057*企业 + 0.053*转型 + 0.049*商业 + 0.043*构建 + 0.040*分析')\n",
      "2020-11-10 20:53:56,224 : INFO : (8, '0.299*管理 + 0.183*知识 + 0.153*数据 + 0.095*知识图谱 + 0.090*转型 + 0.066*新 + 0.033*企业 + 0.021*商业 + 0.021*金融 + 0.016*构建')\n",
      "2020-11-10 20:53:56,227 : INFO : (9, '0.286*新 + 0.280*创新 + 0.096*技术 + 0.080*分析 + 0.070*知识 + 0.050*知识图谱 + 0.033*数据 + 0.030*管理 + 0.024*构建 + 0.017*企业')\n",
      "2020-11-10 20:53:56,229 : INFO : (10, '0.313*数据 + 0.151*一文 + 0.114*创新 + 0.101*金融 + 0.087*知识 + 0.068*管理 + 0.035*技术 + 0.032*企业 + 0.030*转型 + 0.029*新')\n",
      "2020-11-10 20:53:56,231 : INFO : (11, '0.217*转型 + 0.131*新 + 0.129*管理 + 0.115*知识图谱 + 0.111*技术 + 0.077*创新 + 0.070*一文 + 0.061*数据 + 0.037*商业 + 0.020*金融')\n",
      "2020-11-10 20:53:56,234 : INFO : (12, '0.268*企业 + 0.145*一文 + 0.136*管理 + 0.096*数据 + 0.077*知识 + 0.074*创新 + 0.066*商业 + 0.035*技术 + 0.033*分析 + 0.033*金融')\n",
      "2020-11-10 20:53:56,238 : INFO : (13, '0.238*企业 + 0.150*新 + 0.143*构建 + 0.130*分析 + 0.070*技术 + 0.058*转型 + 0.050*金融 + 0.039*创新 + 0.034*知识 + 0.029*管理')\n",
      "2020-11-10 20:53:56,241 : INFO : (14, '0.259*技术 + 0.189*分析 + 0.106*构建 + 0.097*知识图谱 + 0.082*金融 + 0.058*创新 + 0.049*知识 + 0.043*管理 + 0.038*企业 + 0.036*数据')\n",
      "2020-11-10 20:53:56,243 : INFO : (15, '0.244*管理 + 0.145*转型 + 0.109*企业 + 0.107*分析 + 0.090*商业 + 0.071*知识图谱 + 0.066*知识 + 0.052*数据 + 0.036*金融 + 0.025*新')\n",
      "2020-11-10 20:53:56,246 : INFO : (16, '0.158*一文 + 0.139*管理 + 0.116*商业 + 0.110*转型 + 0.105*数据 + 0.097*新 + 0.060*知识图谱 + 0.056*构建 + 0.052*金融 + 0.036*知识')\n",
      "2020-11-10 20:53:56,248 : INFO : (17, '0.179*知识图谱 + 0.170*创新 + 0.154*技术 + 0.116*构建 + 0.091*新 + 0.066*商业 + 0.053*数据 + 0.048*分析 + 0.037*一文 + 0.028*管理')\n",
      "2020-11-10 20:53:56,251 : INFO : (18, '0.251*商业 + 0.157*数据 + 0.104*企业 + 0.091*管理 + 0.077*知识 + 0.067*新 + 0.065*技术 + 0.052*知识图谱 + 0.043*转型 + 0.040*构建')\n",
      "2020-11-10 20:53:56,256 : INFO : (19, '0.208*企业 + 0.207*转型 + 0.193*商业 + 0.081*数据 + 0.070*创新 + 0.050*新 + 0.043*分析 + 0.040*金融 + 0.023*知识图谱 + 0.022*构建')\n"
     ]
    }
   ],
   "source": [
    "\n",
    "model = models.HdpModel(corpus, id2word=dictionary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-10 20:55:59,416 : INFO : (0, '0.184*企业 + 0.144*一文 + 0.127*构建 + 0.104*商业 + 0.094*知识 + 0.064*金融 + 0.048*分析 + 0.046*管理 + 0.042*数据 + 0.038*新')\n",
      "2020-11-10 20:55:59,419 : INFO : (1, '0.229*一文 + 0.136*商业 + 0.103*金融 + 0.101*新 + 0.101*知识 + 0.079*构建 + 0.062*数据 + 0.047*技术 + 0.042*分析 + 0.030*转型')\n",
      "2020-11-10 20:55:59,422 : INFO : (2, '0.179*转型 + 0.145*数据 + 0.131*构建 + 0.077*技术 + 0.074*金融 + 0.069*创新 + 0.068*管理 + 0.068*新 + 0.065*分析 + 0.064*一文')\n",
      "2020-11-10 20:55:59,424 : INFO : (3, '0.166*知识图谱 + 0.151*金融 + 0.096*技术 + 0.096*商业 + 0.082*转型 + 0.078*创新 + 0.077*构建 + 0.066*一文 + 0.058*新 + 0.043*管理')\n",
      "2020-11-10 20:55:59,427 : INFO : (4, '0.245*数据 + 0.143*知识图谱 + 0.130*构建 + 0.121*知识 + 0.108*技术 + 0.069*创新 + 0.064*商业 + 0.045*金融 + 0.021*分析 + 0.016*转型')\n",
      "2020-11-10 20:55:59,430 : INFO : (5, '0.265*商业 + 0.130*一文 + 0.094*创新 + 0.082*数据 + 0.080*金融 + 0.068*新 + 0.057*知识图谱 + 0.053*构建 + 0.051*企业 + 0.048*分析')\n",
      "2020-11-10 20:55:59,435 : INFO : (6, '0.298*知识图谱 + 0.138*创新 + 0.124*一文 + 0.083*管理 + 0.078*转型 + 0.056*商业 + 0.051*知识 + 0.050*数据 + 0.045*分析 + 0.040*金融')\n",
      "2020-11-10 20:55:59,438 : INFO : (7, '0.258*技术 + 0.150*创新 + 0.118*知识图谱 + 0.081*数据 + 0.066*知识 + 0.057*企业 + 0.053*转型 + 0.049*商业 + 0.043*构建 + 0.040*分析')\n",
      "2020-11-10 20:55:59,440 : INFO : (8, '0.299*管理 + 0.183*知识 + 0.153*数据 + 0.095*知识图谱 + 0.090*转型 + 0.066*新 + 0.033*企业 + 0.021*商业 + 0.021*金融 + 0.016*构建')\n",
      "2020-11-10 20:55:59,443 : INFO : (9, '0.286*新 + 0.280*创新 + 0.096*技术 + 0.080*分析 + 0.070*知识 + 0.050*知识图谱 + 0.033*数据 + 0.030*管理 + 0.024*构建 + 0.017*企业')\n",
      "2020-11-10 20:55:59,445 : INFO : (10, '0.313*数据 + 0.151*一文 + 0.114*创新 + 0.101*金融 + 0.087*知识 + 0.068*管理 + 0.035*技术 + 0.032*企业 + 0.030*转型 + 0.029*新')\n",
      "2020-11-10 20:55:59,449 : INFO : (11, '0.217*转型 + 0.131*新 + 0.129*管理 + 0.115*知识图谱 + 0.111*技术 + 0.077*创新 + 0.070*一文 + 0.061*数据 + 0.037*商业 + 0.020*金融')\n",
      "2020-11-10 20:55:59,451 : INFO : (12, '0.268*企业 + 0.145*一文 + 0.136*管理 + 0.096*数据 + 0.077*知识 + 0.074*创新 + 0.066*商业 + 0.035*技术 + 0.033*分析 + 0.033*金融')\n",
      "2020-11-10 20:55:59,454 : INFO : (13, '0.238*企业 + 0.150*新 + 0.143*构建 + 0.130*分析 + 0.070*技术 + 0.058*转型 + 0.050*金融 + 0.039*创新 + 0.034*知识 + 0.029*管理')\n",
      "2020-11-10 20:55:59,456 : INFO : (14, '0.259*技术 + 0.189*分析 + 0.106*构建 + 0.097*知识图谱 + 0.082*金融 + 0.058*创新 + 0.049*知识 + 0.043*管理 + 0.038*企业 + 0.036*数据')\n",
      "2020-11-10 20:55:59,459 : INFO : (15, '0.244*管理 + 0.145*转型 + 0.109*企业 + 0.107*分析 + 0.090*商业 + 0.071*知识图谱 + 0.066*知识 + 0.052*数据 + 0.036*金融 + 0.025*新')\n",
      "2020-11-10 20:55:59,462 : INFO : (16, '0.158*一文 + 0.139*管理 + 0.116*商业 + 0.110*转型 + 0.105*数据 + 0.097*新 + 0.060*知识图谱 + 0.056*构建 + 0.052*金融 + 0.036*知识')\n",
      "2020-11-10 20:55:59,467 : INFO : (17, '0.179*知识图谱 + 0.170*创新 + 0.154*技术 + 0.116*构建 + 0.091*新 + 0.066*商业 + 0.053*数据 + 0.048*分析 + 0.037*一文 + 0.028*管理')\n",
      "2020-11-10 20:55:59,471 : INFO : (18, '0.251*商业 + 0.157*数据 + 0.104*企业 + 0.091*管理 + 0.077*知识 + 0.067*新 + 0.065*技术 + 0.052*知识图谱 + 0.043*转型 + 0.040*构建')\n",
      "2020-11-10 20:55:59,473 : INFO : (19, '0.208*企业 + 0.207*转型 + 0.193*商业 + 0.081*数据 + 0.070*创新 + 0.050*新 + 0.043*分析 + 0.040*金融 + 0.023*知识图谱 + 0.022*构建')\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.184*企业 + 0.144*一文 + 0.127*构建 + 0.104*商业 + 0.094*知识 + 0.064*金融 + 0.048*分析 + 0.046*管理 + 0.042*数据 + 0.038*新'),\n",
       " (1,\n",
       "  '0.229*一文 + 0.136*商业 + 0.103*金融 + 0.101*新 + 0.101*知识 + 0.079*构建 + 0.062*数据 + 0.047*技术 + 0.042*分析 + 0.030*转型'),\n",
       " (2,\n",
       "  '0.179*转型 + 0.145*数据 + 0.131*构建 + 0.077*技术 + 0.074*金融 + 0.069*创新 + 0.068*管理 + 0.068*新 + 0.065*分析 + 0.064*一文'),\n",
       " (3,\n",
       "  '0.166*知识图谱 + 0.151*金融 + 0.096*技术 + 0.096*商业 + 0.082*转型 + 0.078*创新 + 0.077*构建 + 0.066*一文 + 0.058*新 + 0.043*管理'),\n",
       " (4,\n",
       "  '0.245*数据 + 0.143*知识图谱 + 0.130*构建 + 0.121*知识 + 0.108*技术 + 0.069*创新 + 0.064*商业 + 0.045*金融 + 0.021*分析 + 0.016*转型'),\n",
       " (5,\n",
       "  '0.265*商业 + 0.130*一文 + 0.094*创新 + 0.082*数据 + 0.080*金融 + 0.068*新 + 0.057*知识图谱 + 0.053*构建 + 0.051*企业 + 0.048*分析'),\n",
       " (6,\n",
       "  '0.298*知识图谱 + 0.138*创新 + 0.124*一文 + 0.083*管理 + 0.078*转型 + 0.056*商业 + 0.051*知识 + 0.050*数据 + 0.045*分析 + 0.040*金融'),\n",
       " (7,\n",
       "  '0.258*技术 + 0.150*创新 + 0.118*知识图谱 + 0.081*数据 + 0.066*知识 + 0.057*企业 + 0.053*转型 + 0.049*商业 + 0.043*构建 + 0.040*分析'),\n",
       " (8,\n",
       "  '0.299*管理 + 0.183*知识 + 0.153*数据 + 0.095*知识图谱 + 0.090*转型 + 0.066*新 + 0.033*企业 + 0.021*商业 + 0.021*金融 + 0.016*构建'),\n",
       " (9,\n",
       "  '0.286*新 + 0.280*创新 + 0.096*技术 + 0.080*分析 + 0.070*知识 + 0.050*知识图谱 + 0.033*数据 + 0.030*管理 + 0.024*构建 + 0.017*企业'),\n",
       " (10,\n",
       "  '0.313*数据 + 0.151*一文 + 0.114*创新 + 0.101*金融 + 0.087*知识 + 0.068*管理 + 0.035*技术 + 0.032*企业 + 0.030*转型 + 0.029*新'),\n",
       " (11,\n",
       "  '0.217*转型 + 0.131*新 + 0.129*管理 + 0.115*知识图谱 + 0.111*技术 + 0.077*创新 + 0.070*一文 + 0.061*数据 + 0.037*商业 + 0.020*金融'),\n",
       " (12,\n",
       "  '0.268*企业 + 0.145*一文 + 0.136*管理 + 0.096*数据 + 0.077*知识 + 0.074*创新 + 0.066*商业 + 0.035*技术 + 0.033*分析 + 0.033*金融'),\n",
       " (13,\n",
       "  '0.238*企业 + 0.150*新 + 0.143*构建 + 0.130*分析 + 0.070*技术 + 0.058*转型 + 0.050*金融 + 0.039*创新 + 0.034*知识 + 0.029*管理'),\n",
       " (14,\n",
       "  '0.259*技术 + 0.189*分析 + 0.106*构建 + 0.097*知识图谱 + 0.082*金融 + 0.058*创新 + 0.049*知识 + 0.043*管理 + 0.038*企业 + 0.036*数据'),\n",
       " (15,\n",
       "  '0.244*管理 + 0.145*转型 + 0.109*企业 + 0.107*分析 + 0.090*商业 + 0.071*知识图谱 + 0.066*知识 + 0.052*数据 + 0.036*金融 + 0.025*新'),\n",
       " (16,\n",
       "  '0.158*一文 + 0.139*管理 + 0.116*商业 + 0.110*转型 + 0.105*数据 + 0.097*新 + 0.060*知识图谱 + 0.056*构建 + 0.052*金融 + 0.036*知识'),\n",
       " (17,\n",
       "  '0.179*知识图谱 + 0.170*创新 + 0.154*技术 + 0.116*构建 + 0.091*新 + 0.066*商业 + 0.053*数据 + 0.048*分析 + 0.037*一文 + 0.028*管理'),\n",
       " (18,\n",
       "  '0.251*商业 + 0.157*数据 + 0.104*企业 + 0.091*管理 + 0.077*知识 + 0.067*新 + 0.065*技术 + 0.052*知识图谱 + 0.043*转型 + 0.040*构建'),\n",
       " (19,\n",
       "  '0.208*企业 + 0.207*转型 + 0.193*商业 + 0.081*数据 + 0.070*创新 + 0.050*新 + 0.043*分析 + 0.040*金融 + 0.023*知识图谱 + 0.022*构建')]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# model.num_topics  # 该模型自动生成 主题数有多少？\n",
    "model.print_topics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.184*企业 + 0.144*一文 + 0.127*构建 + 0.104*商业 + 0.094*知识 + 0.064*金融 + 0.048*分析 + 0.046*管理 + 0.042*数据 + 0.038*新 + 0.032*知识图谱 + 0.028*创新 + 0.026*技术 + 0.024*转型'),\n",
       " (1,\n",
       "  '0.229*一文 + 0.136*商业 + 0.103*金融 + 0.101*新 + 0.101*知识 + 0.079*构建 + 0.062*数据 + 0.047*技术 + 0.042*分析 + 0.030*转型 + 0.029*知识图谱 + 0.016*管理 + 0.015*企业 + 0.008*创新'),\n",
       " (2,\n",
       "  '0.179*转型 + 0.145*数据 + 0.131*构建 + 0.077*技术 + 0.074*金融 + 0.069*创新 + 0.068*管理 + 0.068*新 + 0.065*分析 + 0.064*一文 + 0.032*知识 + 0.015*企业 + 0.012*知识图谱 + 0.000*商业'),\n",
       " (3,\n",
       "  '0.166*知识图谱 + 0.151*金融 + 0.096*技术 + 0.096*商业 + 0.082*转型 + 0.078*创新 + 0.077*构建 + 0.066*一文 + 0.058*新 + 0.043*管理 + 0.037*分析 + 0.024*数据 + 0.020*企业 + 0.007*知识'),\n",
       " (4,\n",
       "  '0.245*数据 + 0.143*知识图谱 + 0.130*构建 + 0.121*知识 + 0.108*技术 + 0.069*创新 + 0.064*商业 + 0.045*金融 + 0.021*分析 + 0.016*转型 + 0.015*企业 + 0.009*一文 + 0.007*管理 + 0.006*新'),\n",
       " (5,\n",
       "  '0.265*商业 + 0.130*一文 + 0.094*创新 + 0.082*数据 + 0.080*金融 + 0.068*新 + 0.057*知识图谱 + 0.053*构建 + 0.051*企业 + 0.048*分析 + 0.041*技术 + 0.023*知识 + 0.008*转型 + 0.002*管理'),\n",
       " (6,\n",
       "  '0.298*知识图谱 + 0.138*创新 + 0.124*一文 + 0.083*管理 + 0.078*转型 + 0.056*商业 + 0.051*知识 + 0.050*数据 + 0.045*分析 + 0.040*金融 + 0.016*技术 + 0.016*新 + 0.004*构建 + 0.001*企业'),\n",
       " (7,\n",
       "  '0.258*技术 + 0.150*创新 + 0.118*知识图谱 + 0.081*数据 + 0.066*知识 + 0.057*企业 + 0.053*转型 + 0.049*商业 + 0.043*构建 + 0.040*分析 + 0.028*一文 + 0.028*管理 + 0.018*新 + 0.013*金融'),\n",
       " (8,\n",
       "  '0.299*管理 + 0.183*知识 + 0.153*数据 + 0.095*知识图谱 + 0.090*转型 + 0.066*新 + 0.033*企业 + 0.021*商业 + 0.021*金融 + 0.016*构建 + 0.009*创新 + 0.009*分析 + 0.004*一文 + 0.000*技术'),\n",
       " (9,\n",
       "  '0.286*新 + 0.280*创新 + 0.096*技术 + 0.080*分析 + 0.070*知识 + 0.050*知识图谱 + 0.033*数据 + 0.030*管理 + 0.024*构建 + 0.017*企业 + 0.011*转型 + 0.011*金融 + 0.009*商业 + 0.005*一文'),\n",
       " (10,\n",
       "  '0.313*数据 + 0.151*一文 + 0.114*创新 + 0.101*金融 + 0.087*知识 + 0.068*管理 + 0.035*技术 + 0.032*企业 + 0.030*转型 + 0.029*新 + 0.018*构建 + 0.017*商业 + 0.002*知识图谱 + 0.001*分析'),\n",
       " (11,\n",
       "  '0.217*转型 + 0.131*新 + 0.129*管理 + 0.115*知识图谱 + 0.111*技术 + 0.077*创新 + 0.070*一文 + 0.061*数据 + 0.037*商业 + 0.020*金融 + 0.020*构建 + 0.006*知识 + 0.005*企业 + 0.002*分析'),\n",
       " (12,\n",
       "  '0.268*企业 + 0.145*一文 + 0.136*管理 + 0.096*数据 + 0.077*知识 + 0.074*创新 + 0.066*商业 + 0.035*技术 + 0.033*分析 + 0.033*金融 + 0.025*新 + 0.008*知识图谱 + 0.002*转型 + 0.001*构建'),\n",
       " (13,\n",
       "  '0.238*企业 + 0.150*新 + 0.143*构建 + 0.130*分析 + 0.070*技术 + 0.058*转型 + 0.050*金融 + 0.039*创新 + 0.034*知识 + 0.029*管理 + 0.028*一文 + 0.011*商业 + 0.011*数据 + 0.010*知识图谱'),\n",
       " (14,\n",
       "  '0.259*技术 + 0.189*分析 + 0.106*构建 + 0.097*知识图谱 + 0.082*金融 + 0.058*创新 + 0.049*知识 + 0.043*管理 + 0.038*企业 + 0.036*数据 + 0.028*一文 + 0.007*商业 + 0.005*新 + 0.005*转型'),\n",
       " (15,\n",
       "  '0.244*管理 + 0.145*转型 + 0.109*企业 + 0.107*分析 + 0.090*商业 + 0.071*知识图谱 + 0.066*知识 + 0.052*数据 + 0.036*金融 + 0.025*新 + 0.023*创新 + 0.019*一文 + 0.013*技术 + 0.001*构建'),\n",
       " (16,\n",
       "  '0.158*一文 + 0.139*管理 + 0.116*商业 + 0.110*转型 + 0.105*数据 + 0.097*新 + 0.060*知识图谱 + 0.056*构建 + 0.052*金融 + 0.036*知识 + 0.034*企业 + 0.019*分析 + 0.010*创新 + 0.008*技术'),\n",
       " (17,\n",
       "  '0.179*知识图谱 + 0.170*创新 + 0.154*技术 + 0.116*构建 + 0.091*新 + 0.066*商业 + 0.053*数据 + 0.048*分析 + 0.037*一文 + 0.028*管理 + 0.028*知识 + 0.016*金融 + 0.013*企业 + 0.001*转型'),\n",
       " (18,\n",
       "  '0.251*商业 + 0.157*数据 + 0.104*企业 + 0.091*管理 + 0.077*知识 + 0.067*新 + 0.065*技术 + 0.052*知识图谱 + 0.043*转型 + 0.040*构建 + 0.020*分析 + 0.013*创新 + 0.011*一文 + 0.008*金融'),\n",
       " (19,\n",
       "  '0.208*企业 + 0.207*转型 + 0.193*商业 + 0.081*数据 + 0.070*创新 + 0.050*新 + 0.043*分析 + 0.040*金融 + 0.023*知识图谱 + 0.022*构建 + 0.022*一文 + 0.020*管理 + 0.017*技术 + 0.006*知识')]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "model.show_topics()  #"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0,\n",
       "  '0.184*企业 + 0.144*一文 + 0.127*构建 + 0.104*商业 + 0.094*知识 + 0.064*金融 + 0.048*分析 + 0.046*管理 + 0.042*数据 + 0.038*新 + 0.032*知识图谱 + 0.028*创新 + 0.026*技术 + 0.024*转型'),\n",
       " (1,\n",
       "  '0.229*一文 + 0.136*商业 + 0.103*金融 + 0.101*新 + 0.101*知识 + 0.079*构建 + 0.062*数据 + 0.047*技术 + 0.042*分析 + 0.030*转型 + 0.029*知识图谱 + 0.016*管理 + 0.015*企业 + 0.008*创新'),\n",
       " (2,\n",
       "  '0.179*转型 + 0.145*数据 + 0.131*构建 + 0.077*技术 + 0.074*金融 + 0.069*创新 + 0.068*管理 + 0.068*新 + 0.065*分析 + 0.064*一文 + 0.032*知识 + 0.015*企业 + 0.012*知识图谱 + 0.000*商业'),\n",
       " (3,\n",
       "  '0.166*知识图谱 + 0.151*金融 + 0.096*技术 + 0.096*商业 + 0.082*转型 + 0.078*创新 + 0.077*构建 + 0.066*一文 + 0.058*新 + 0.043*管理 + 0.037*分析 + 0.024*数据 + 0.020*企业 + 0.007*知识'),\n",
       " (4,\n",
       "  '0.245*数据 + 0.143*知识图谱 + 0.130*构建 + 0.121*知识 + 0.108*技术 + 0.069*创新 + 0.064*商业 + 0.045*金融 + 0.021*分析 + 0.016*转型 + 0.015*企业 + 0.009*一文 + 0.007*管理 + 0.006*新'),\n",
       " (5,\n",
       "  '0.265*商业 + 0.130*一文 + 0.094*创新 + 0.082*数据 + 0.080*金融 + 0.068*新 + 0.057*知识图谱 + 0.053*构建 + 0.051*企业 + 0.048*分析 + 0.041*技术 + 0.023*知识 + 0.008*转型 + 0.002*管理'),\n",
       " (6,\n",
       "  '0.298*知识图谱 + 0.138*创新 + 0.124*一文 + 0.083*管理 + 0.078*转型 + 0.056*商业 + 0.051*知识 + 0.050*数据 + 0.045*分析 + 0.040*金融 + 0.016*技术 + 0.016*新 + 0.004*构建 + 0.001*企业'),\n",
       " (7,\n",
       "  '0.258*技术 + 0.150*创新 + 0.118*知识图谱 + 0.081*数据 + 0.066*知识 + 0.057*企业 + 0.053*转型 + 0.049*商业 + 0.043*构建 + 0.040*分析 + 0.028*一文 + 0.028*管理 + 0.018*新 + 0.013*金融'),\n",
       " (8,\n",
       "  '0.299*管理 + 0.183*知识 + 0.153*数据 + 0.095*知识图谱 + 0.090*转型 + 0.066*新 + 0.033*企业 + 0.021*商业 + 0.021*金融 + 0.016*构建 + 0.009*创新 + 0.009*分析 + 0.004*一文 + 0.000*技术'),\n",
       " (9,\n",
       "  '0.286*新 + 0.280*创新 + 0.096*技术 + 0.080*分析 + 0.070*知识 + 0.050*知识图谱 + 0.033*数据 + 0.030*管理 + 0.024*构建 + 0.017*企业 + 0.011*转型 + 0.011*金融 + 0.009*商业 + 0.005*一文'),\n",
       " (10,\n",
       "  '0.313*数据 + 0.151*一文 + 0.114*创新 + 0.101*金融 + 0.087*知识 + 0.068*管理 + 0.035*技术 + 0.032*企业 + 0.030*转型 + 0.029*新 + 0.018*构建 + 0.017*商业 + 0.002*知识图谱 + 0.001*分析'),\n",
       " (11,\n",
       "  '0.217*转型 + 0.131*新 + 0.129*管理 + 0.115*知识图谱 + 0.111*技术 + 0.077*创新 + 0.070*一文 + 0.061*数据 + 0.037*商业 + 0.020*金融 + 0.020*构建 + 0.006*知识 + 0.005*企业 + 0.002*分析'),\n",
       " (12,\n",
       "  '0.268*企业 + 0.145*一文 + 0.136*管理 + 0.096*数据 + 0.077*知识 + 0.074*创新 + 0.066*商业 + 0.035*技术 + 0.033*分析 + 0.033*金融 + 0.025*新 + 0.008*知识图谱 + 0.002*转型 + 0.001*构建'),\n",
       " (13,\n",
       "  '0.238*企业 + 0.150*新 + 0.143*构建 + 0.130*分析 + 0.070*技术 + 0.058*转型 + 0.050*金融 + 0.039*创新 + 0.034*知识 + 0.029*管理 + 0.028*一文 + 0.011*商业 + 0.011*数据 + 0.010*知识图谱'),\n",
       " (14,\n",
       "  '0.259*技术 + 0.189*分析 + 0.106*构建 + 0.097*知识图谱 + 0.082*金融 + 0.058*创新 + 0.049*知识 + 0.043*管理 + 0.038*企业 + 0.036*数据 + 0.028*一文 + 0.007*商业 + 0.005*新 + 0.005*转型'),\n",
       " (15,\n",
       "  '0.244*管理 + 0.145*转型 + 0.109*企业 + 0.107*分析 + 0.090*商业 + 0.071*知识图谱 + 0.066*知识 + 0.052*数据 + 0.036*金融 + 0.025*新 + 0.023*创新 + 0.019*一文 + 0.013*技术 + 0.001*构建'),\n",
       " (16,\n",
       "  '0.158*一文 + 0.139*管理 + 0.116*商业 + 0.110*转型 + 0.105*数据 + 0.097*新 + 0.060*知识图谱 + 0.056*构建 + 0.052*金融 + 0.036*知识 + 0.034*企业 + 0.019*分析 + 0.010*创新 + 0.008*技术'),\n",
       " (17,\n",
       "  '0.179*知识图谱 + 0.170*创新 + 0.154*技术 + 0.116*构建 + 0.091*新 + 0.066*商业 + 0.053*数据 + 0.048*分析 + 0.037*一文 + 0.028*管理 + 0.028*知识 + 0.016*金融 + 0.013*企业 + 0.001*转型'),\n",
       " (18,\n",
       "  '0.251*商业 + 0.157*数据 + 0.104*企业 + 0.091*管理 + 0.077*知识 + 0.067*新 + 0.065*技术 + 0.052*知识图谱 + 0.043*转型 + 0.040*构建 + 0.020*分析 + 0.013*创新 + 0.011*一文 + 0.008*金融'),\n",
       " (19,\n",
       "  '0.208*企业 + 0.207*转型 + 0.193*商业 + 0.081*数据 + 0.070*创新 + 0.050*新 + 0.043*分析 + 0.040*金融 + 0.023*知识图谱 + 0.022*构建 + 0.022*一文 + 0.020*管理 + 0.017*技术 + 0.006*知识')]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.show_topics()  # 该模型自动生成 主题数有多少？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
